package net.zjict.lib.creationType.singletonPattern.instance;

/**
 * @author 朱志文
 * @data 2019/10/29 0029
 * 双重检查模式（DCL）
 * JDK版本：JDK1.5起
 * 是否Lazy初始化：是
 * 是否多线程安全：是
 * 实现难度：较复杂
 * 描述：这种方式采用双锁机制，安全且在多线程情况下能保持高性能。
 * getInstance()的性能对应用程序很关键
 */
public class SingletonCheck {
    private static volatile SingletonCheck instance;
    private SingletonCheck(){

    }
    public static SingletonCheck getInstance(){
        if (instance==null){
            synchronized (SingletonCheck.class){
                if (instance==null){
                    instance=new SingletonCheck();
                }
            }
        }
        return instance;
    }

}
